﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using vudu.Logica.Clases;
using vudu.EnlaceDatos.SqlServer;
using System.Data;
using System.IO;

namespace vudu.Pruebas
{
    [TestFixture]
    public class PruebaEnlaceDeDatosArchivoPdf
    {

       


        [Test]
        public void PruebaConsultarArchivoProfesor()
        {
            Profesor profesor = new Profesor();
            profesor.Nombre = "Nelson";
            profesor.Cedula = 4097234;
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 4;
            miSeccion.Codigo = 1;
            int idArchivo;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf", "Notas", new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccion.IdSeccionMateria.ToString());
            DataTable dtt = user.consultarArchivoProfesor(profesor.Cedula, miSeccion.IdSeccionMateria);
            DataRow filaM = dtt.Rows[0];
            Assert.IsNotNull(dtt);
            Assert.AreEqual(profesor.Nombre, filaM[0].ToString());
            Assert.AreEqual(miSeccion.Codigo,int.Parse(filaM[1].ToString()));
            List<OperacionesPdf> miOperacionesPdf = user.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas");


            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas"))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }
            
        }

        [Test]
        public void PruebaConsultarArchivoEstudiante()
        {
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 1;
            Profesor profesor = new Profesor();
            profesor.Cedula = 14990555;
            int idArchivo;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf", "Notas", new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccion.IdSeccionMateria.ToString());
            
            DataTable dtt = user.consultarArchivoEstudiante(miSeccion.IdSeccionMateria);
            DataRow filaM = dtt.Rows[0];
            Assert.IsNotNull(dtt);
            Assert.AreEqual(miSeccion.IdSeccionMateria, int.Parse(filaM[5].ToString()));

            List<OperacionesPdf> miOperacionesPdf = user.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas");

           
            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas"))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }
        }

        [Test]
        public void PruebaConsultarSeccionesProfesorArchivoPdf()
        {
            Profesor profesor = new Profesor();
            profesor.Cedula = 14990555;
            SeccionMateria miSeccionMateria = new SeccionMateria();
            miSeccionMateria.Materia.Nombre = "Algoritmos II";
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            List<SeccionMateria> miLista = user.ConsultarSeccionesProfesorArchivoPdf(profesor);
            Assert.IsNotNull(miLista);
            Assert.AreEqual(miLista.ElementAt(0).Materia.Nombre, miSeccionMateria.Materia.Nombre );

        }

        [Test]
        public void PruebaConsultarCategoriaProfesorArchivoPdf()
        {
            Profesor profesor = new Profesor();
            profesor.Cedula = 14990555;
            SeccionMateria miSeccionMateria = new SeccionMateria();
            miSeccionMateria.IdSeccionMateria = 1;
            int idArchivo;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf", "Notas", new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccionMateria.IdSeccionMateria.ToString());
            List<OperacionesPdf> miOperacionesPdf = user.ConsultarCategoriaProfesorArchivoPdf(profesor, miSeccionMateria.IdSeccionMateria);
            Assert.IsNotNull(user);
            Assert.IsNotNull(miOperacionesPdf);
            Assert.AreEqual(miOperacionesPdf.ElementAt(0).categoria,"Notas");

            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccionMateria.IdSeccionMateria, "Notas"))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }

        }

        [Test]
        public void PruebaConsultarNombreArchivoPdf()
        {
            int idArchivo;    
            Profesor profesor = new Profesor();
            profesor.Cedula = 14990555;
            String categoria = "Notas";
            SeccionMateria miSeccionMateria = new SeccionMateria();
            miSeccionMateria.IdSeccionMateria = 1;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf","Notas",new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccionMateria.IdSeccionMateria.ToString());
            List<OperacionesPdf> miOperacionesPdf = user.ConsultarNombreArchivoPdf(profesor, miSeccionMateria.IdSeccionMateria, categoria);

            Assert.IsNotNull(user);
            Assert.IsNotNull(miOperacionesPdf);
            Assert.AreEqual(miOperacionesPdf.ElementAt(0).nombreArchivo, "Prueba.pdf");
            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccionMateria.IdSeccionMateria, categoria))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }
            
            
        }

        [Test]
        public void PruebaConsultarSeccionesEstudianteArchivoPdf()
        {
            Estudiante estudiante = new Estudiante();
            estudiante.Cedula = 19345678;
            SeccionMateria miSeccionMateria = new SeccionMateria();
            miSeccionMateria.Materia.Nombre = "Desarrollo del Software";
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            List<SeccionMateria> miLista = user.ConsultarSeccionesEstudianteArchivoPdf(estudiante);
            Assert.IsNotNull(miLista);
            Assert.AreEqual(miLista.ElementAt(0).Materia.Nombre, miSeccionMateria.Materia.Nombre);
        }

        [Test]
        public void PruebaConsultarDatosSeccionProfesorArchivoPdf()
        {
            Profesor profesor = new Profesor();
            profesor.Cedula = 14990555;
            SeccionMateria miSeccionMateria = new SeccionMateria();
            miSeccionMateria.Materia.Nombre = "Desarrollo del Software";
            int seccionMateria = 1;
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            List<SeccionMateria> miLista = user.ConsultarDatosSeccionProfesorArchivoPdf(profesor,miSeccionMateria);
            Assert.IsNotNull(user);
            Assert.IsNotNull(miLista);
            Assert.AreEqual(miLista.ElementAt(0).IdSeccionMateria,seccionMateria);
        }

        [Test]
        public void PruebaInsertarArchivoPdf()
        {
            String pruebaArchivo;
            String pruebaCategoria;
            String pruebaRuta;
            Profesor profesor = new Profesor();
            profesor.Nombre = "Nelson";
            profesor.Cedula = 4097234;
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 4;
            miSeccion.Codigo = 2;
            int idArchivo;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf", "Notas", new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccion.IdSeccionMateria.ToString());
            DataTable dtt = user.consultarArchivoProfesor(profesor.Cedula, miSeccion.IdSeccionMateria);
            for (int i = 0; i < dtt.Rows.Count; i++)
            {

                DataRow filaM = dtt.Rows[i];
                if(filaM[2].Equals("Prueba.pdf"))
                {
                    pruebaArchivo = filaM[2].ToString();
                    pruebaRuta = filaM[3].ToString();
                    pruebaCategoria = filaM[4].ToString();
                    Assert.IsNotNull(dtt);
                    Assert.AreEqual(archivoPdf.nombreArchivo, pruebaArchivo);
                    Assert.AreEqual("~/Archivo/", pruebaRuta);
                    Assert.AreEqual(archivoPdf.categoria, pruebaCategoria);
                    
                }
            }

                     
            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas"))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }

        }

        [Test]
        public void PruebaEliminarArchivoPdf()
        {
            bool encontrado = false;
            Profesor profesor = new Profesor();
            profesor.Nombre = "Nelson";
            profesor.Cedula = 4097234;
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 4;
            miSeccion.Codigo = 1;
            int idArchivo;
            OperacionesPdf archivoPdf = new OperacionesPdf("Prueba.pdf", "Notas", new FileInfo("~/Archivo/"));
            SqlServerArchivoPdf sqlServerArchivo = new SqlServerArchivoPdf();
            SqlServerArchivoPdf user = new SqlServerArchivoPdf();
            user.InsertarArchivoPdf(archivoPdf, 0, profesor, miSeccion.IdSeccionMateria.ToString());
            

            foreach (OperacionesPdf archivo in sqlServerArchivo.ConsultarNombreArchivoPdf(profesor, miSeccion.IdSeccionMateria, "Notas"))
            {
                if (archivo.nombreArchivo == "Prueba.pdf")
                {
                    idArchivo = archivo.idArchivo;
                    user.EliminarArchivoPdf(idArchivo, 0, profesor);
                }
            }

            DataTable dtt = user.consultarArchivoProfesor(profesor.Cedula, miSeccion.IdSeccionMateria);
            

                
                if (dtt.Rows.Count == 0)
                {
                    encontrado = true;

                }
                else
                    encontrado = false;
            

            Assert.IsNotNull(dtt);
            Assert.IsTrue(encontrado);
        }
    }
}